package cc.rengu.igas.momp.common.dao;

import cc.rengu.igas.momp.common.entity.TMStatMfdCriteria;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 手续费减免达标数据统计表数据库操作接口定义
 *
 * @author Jinan Liu
 * @version 1.0.0
 * @date 2020/4/20 11:05
 */

public interface TMStatMfdCriteriaMapper {

    /**
     * 使用商户编号和当前交易日期获取商户当前统计周期内已参加的商户手续费优惠营销活动的数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mchntNo   商户号
     * @param transDate 交易日期
     * @return cc.rengu.igas.momp.common.entity.TMStatMfdCriteria 手续费减免达标数据统计表
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/4/20 11:07
     */
    TMStatMfdCriteria selectTMStatMfdCriteriaByUsingMchntNoAndDateRange(String instId, String mchntNo, String transDate) throws Exception;

    /**
     * 插入新增商户数据数据库操作接口定义
     *
     * @param tmStatMfdCriteriaList 手续费减免达标数据统计表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @since 2020-07-07 23:00
     */
    int insertNewMchntCriteriaData(List<TMStatMfdCriteria> tmStatMfdCriteriaList) throws Exception;

    /**
     * 更新手续费减免达标数据统计表商户优惠退出标志
     *
     * @param tmStatMfdCriteria 手续费减免达标数据统计表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author liujinan
     * @since 2020-07-20 13:00
     */
    int updateTMstatMfdCriteriaByPrimaryKey(TMStatMfdCriteria tmStatMfdCriteria) throws Exception;

    /**
     * 使用商户编号，营销活动编号和交易日期获取商户达标数据统计 数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mchntNo   商户号
     * @param transDate 交易日期
     * @param mcNo      活动编号
     * @return cc.rengu.igas.momp.common.entity.TMStatMfdCriteria 手续费减免达标数据统计表
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2020/8/29 11:07
     */
    TMStatMfdCriteria selectTMStatMfdCriteriaByUsingMchntNoAndMcNoAndDateRange(String instId, String mchntNo, String transDate, String mcNo) throws Exception;

    /**
     * 更新手续费减免达标数据统计表统计结束周期
     *
     * @param tmStatMfdCriteria 手续费减免达标数据统计表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author JL Pang
     * @since 2020-09-16
     */
    int updateTMstatMfdCriteriaEndDateByPrimaryKey(TMStatMfdCriteria tmStatMfdCriteria) throws Exception;

    /**
     * 查询指定商户、活动 统计开始日期大于指定日期数据
     *
     * @param instId  法人机构号
     * @param mchntNo 商户号
     * @param mcNo    活动号
     * @param txnDate 日期
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMStatMfdCriteria>
     * @throws Exception 异常信息
     * @author JL PANG
     * @date 2020/9/19 18:58
     */
    List<TMStatMfdCriteria> selectCriteriaInfoListByinstIdMchntNoMcNoDate(String instId, String mchntNo, String mcNo, String txnDate) throws Exception;

    /**
     * 删除手续费减免达标数据统计表数据
     *
     * @param tmStatMfdCriteriaList 手续费减免达标数据统计表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author JL Pang
     * @since 2020-09-16
     */
    int deletetmStatMfdCriteria(List<TMStatMfdCriteria> tmStatMfdCriteriaList) throws Exception;

    /**
     * 查询指定活动 统计开始日期大于指定日期数据
     *
     * @param instId  法人机构号
     * @param mcNo    活动号
     * @param txnDate 日期
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMStatMfdCriteria>
     * @throws Exception 异常信息
     * @author JL PANG
     * @date 2021/2/23 9:58
     */
    List<TMStatMfdCriteria> selectCriteriaInfoListByinstIdMcNoDate(String instId, String mcNo, String txnDate) throws Exception;

    /**
     * 查询指定活动条数 统计开始日期大于指定日期数据
     *
     * @param instId  法人机构号
     * @param mcNo    活动号
     * @param txnDate 日期
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMStatMfdCriteria>
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/8/3 9:58
     */
    TMStatMfdCriteria selectCriteriaInfoListCountByinstIdMcNoDate(String instId, String mcNo, String txnDate) throws Exception;

    /**
     * 更新指定机构号，活动手续费减免达标数据统计表优惠退出状态
     *
     * @param tmStatMfdCriteria 手续费减免达标数据统计表
     * @return int 返回码
     * @throws Exception 异常信息
     * @author JL Pang
     * @since 2021-2-23 11:00
     */
    int updateTMstatMfdCriteriaExitDiscountStatusByPrimaryKey(TMStatMfdCriteria tmStatMfdCriteria) throws Exception;

    /**
     * 查询指定活动 当前日期内符合条件的达标统计表数据
     *
     * @param instId  法人机构号
     * @param mcNo    活动号
     * @param txnDate 日期
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMStatMfdCriteria>
     * @throws Exception 异常信息
     * @author JL PANG
     * @date 2021/6/24 9:58
     */
    List<TMStatMfdCriteria> selectTMStatMfdCriteriaByMcNoAndDateRange(String instId, String mcNo, String txnDate) throws Exception;

    /**
     * 查询指定活动条数 当前日期内符合条件的达标统计表数据
     *
     * @param instId  法人机构号
     * @param mcNo    活动号
     * @param txnDate 日期
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMStatMfdCriteria>
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/8/3 15:58
     */
    TMStatMfdCriteria selectTMStatMfdCriteriaCountByMcNoAndDateRange(String instId, String mcNo, String txnDate) throws Exception;

    /**
     * 查询商户当前周期优惠额度上限
     *
     * @param tmStatMfdCriteria 达标统计报表实体
     * @return java.util.List<cc.rengu.igas.momp.common.entity.TMStatMfdCriteria>
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/6/23 9:58
     */
    List<Object> selectMchntQuotaInfoList(TMStatMfdCriteria tmStatMfdCriteria) throws Exception;

    /**
     * 查询商户当前周期优惠额度上限 分页查询
     *
     * @param tmStatMfdCriteria 达标统计报表实体
     * @param pageInfo          分页
     * @return cc.rengu.oltp.utility.bean.PageResult 查询结果列表
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/6/23 9:58
     */
    PageResult selectMchntQuotaInfoPageList(TMStatMfdCriteria tmStatMfdCriteria, PageInfo pageInfo) throws Exception;

    /**
     * 修改商户当前周期优惠额度上限
     *
     * @param tmStatMfdCriteria 达标统计报表实体
     * @return int 返回码
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/6/23 9:58
     */
    int updateMchntFeeTxnAmtLimit(TMStatMfdCriteria tmStatMfdCriteria) throws Exception;

    /**
     * 分页查询所传机构及下属机构所有商户达标统计表数据
     *
     * @param tmStatMfdCriteria 达标统计报表实体
     * @param pageInfo          分页
     * @return cc.rengu.oltp.utility.bean.PageResult 查询结果列表
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/8/16 9:58
     */
    PageResult selectMchntByorgCode(TMStatMfdCriteria tmStatMfdCriteria, PageInfo pageInfo) throws Exception;

    /**
     * 使用商户编号和当前交易日期获取商户当前统计周期内已参加的商户手续费优惠营销活动的数据库操作接口定义
     *
     * @param instId    法人机构号
     * @param mchntNo   商户号
     * @param transDate 交易日期
     * @return cc.rengu.igas.momp.common.entity.TMStatMfdCriteria 手续费减免达标数据统计表
     * @throws Exception 异常信息
     * @author liujinan
     * @date 2021/8/25 11:07
     */
    TMStatMfdCriteria selectTMStatMfdCriteriaByMchntNoAndDateRange(String instId, String mchntNo, String transDate) throws Exception;

}
